// 公式1：1-先完成功能、2-写空函数、3-将1放到2里面、3-微调
// 公式2：固定逻辑不写函数，非巩固逻辑写函数



/**
 * 发送get异步请求
 * @param {string} url 请求地址
 * @param {object} params 请求参数 🌰 { 参数名:数据,...,参数名:数据}
 * @param {function} callback 回调函数
 * @param {string|undefined} type 数据类型
 * @param {object} headers 自定义请求头
 * @return undefined
 */
 function get(url, params, callback, type, headers={}) 
 {
     // let callback = res => {
     // }
     // 一、创建xhr对象
     const xhr = new XMLHttpRequest
     // 二、监控请求状态
     xhr.onreadystatechange = () => {
         // 返回
         if (xhr.readyState === 4)
         {
             // 成功
             if (xhr.status === 200)
             {
                 // 获取数据  result 
                 // let res = JSON.parse(xhr.responseText)
                 let res = xhr.responseText
                 if (type==='json') res = JSON.parse(xhr.responseText)
                 // 逻辑处理
                 // 百度搜索
                 // 看电影
                 callback(res)
             } else {
                 console.log('瑕疵：', xhr.status)
             }
         }
     }
     // 三、设置请求方式、请求地址
     // 3.1 定义空数组  []
     let temp = []
     // 3.2 遍历对象for in key键 params[key]数据
     for (let key in params)
     {
         // 3.3 将数据按照 `键=值`格式push到数组中
         // temp.push(`${key}=${params.key}`)
         temp.push(`${key}=${params[key]}`)
     }
     // 3.4 最后数组变字符串 &    temp.join('&')
 
     // xhr.open('get', 请求地址?请求参数)
     // xhr.open('get', `${url}?${params}`)
     xhr.open('get', `${url}?${temp.join('&')}`)
 
     for (let key in headers)
     {
         // xhr.setRequestHeader(key, headers.key)
         xhr.setRequestHeader(key, headers[key])
     }
 
     // 四、发送请求
     xhr.send(null)
 }
 
 // 百度搜索
 // get(地址1，参数1， res => {
 
 // }) 
 // 看电影
 // get(地址2，参数2, res => {
 
 // }) 
 
 
 
 /**
  * 发送post异步请求
  * @param {string} url 请求地址
  * @param {string} params 请求参数 🌰 参数名=数据&...&参数名=数据
  * @param {function} callback 回调函数
  * @return undefined
  */
  function post(url, params, callback) 
  {
      // let callback = res => {
      // }
      // 一、创建xhr对象
      const xhr = new XMLHttpRequest
      // 二、监控请求状态
      xhr.onreadystatechange = () => {
          // 返回
          if (xhr.readyState === 4)
          {
              // 成功
              if (xhr.status === 200)
              {
                  // 获取数据  result 
                  let res = JSON.parse(xhr.responseText)
                  // 逻辑处理
                  // 百度搜索
                  // 看电影
                  callback(res)
              } else {
                  console.log('瑕疵：', xhr.status)
              }
          }
      }
      // 三、设置请求方式、请求地址
      xhr.open('post', `${url}`)
      xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded')
      // 四、发送请求
      xhr.send(params)
  }